<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * Помощник для отрисовки виджетов
 *
 * @package CoreFramework
 * @version 1.0
 * @author Gennadiy Kozlenko
 */

/**
 * Обработка страницы и замена на ней всех виджетов
 *
 * @access public
 * @param string $output
 * @return string
 */
function parse_widgets($output) {
	$matches = array();
   if (preg_match_all('~{%widget\[([^\]]+)\]%}~s', $output, $matches)) {
      for ($i = 0; $i < count($matches[0]); $i++) {
         $output = preg_replace('~' . preg_quote($matches[0][$i], '~') . '~', widget_process($matches[1][$i]), $output, 1);
      }
   }
   return $output;
} // end parse_widgets

/**
 * Отрисовка виджета
 * 
 * @access public
 * @param string $str
 * @return string
 */
function widget_process($str) {
   $obj =& get_instance();
   $segments = explode(',', $str);
   $widget = strtolower(array_shift($segments));
   $params = array();
   foreach ($segments as $pair) {
      $array = explode('=', $pair);
      if (2 == count($array)) {
         $params[$array[0]] = $array[1];
      }
   }
   // Подгружаем widget
   $output = '';
   if (file_exists(APPPATH . 'helpers/widget/' . $widget . '_helper.php')) {
      $obj->load->helper('widget/' . $widget);
      $output = call_user_func($widget . '_widget', $params);
   }
   return $output;
} // end link_process
